package com.rabbitmq.demo.service;

import com.rabbitmq.demo.entity.User;
import org.springframework.amqp.core.Message;
import org.springframework.stereotype.Service;

/**
 * @Author huangliang
 * @Date 2022/03/28
 * @Describe 针对RabbitMQ消息中间件进行消息接收和处理的业务接口
 */
@Service
public interface IRabbitMQService {
    /**
     * Publish/Subscribe订阅发布模式接收、处理邮件业务
     * @param message
     */
    void psubConsumerEmail(Message message);

    /**
     * Publish/Subscribe订阅发布模式接收、处理短信业务
     * @param message
     */
    void psubConsumerSms(Message message);

    /**
     * 使用基于注解的方式实现消息服务
     * Publish/Subscribe订阅发布模式接收、处理邮件业务
     * @param user
     */
    void psubConsumerEmailAno(User user);

    /**
     * 使用基于注解的方式实现消息服务
     * Publish/Subscribe订阅发布模式接收、处理短信业务
     * @param user
     */
    void psubConsumerSmsAno(User user);

    /**
     * 路由模式接收、处理error级别日志信息
     * @param message
     */
    void routingConsumerError(String message);

    /**
     * 路由模式接收、处理info、error、warning级别日志信息
     * @param message
     */
    void routingConsumerAll(String message);

    /**
     * 通配符模式消息接收、进行邮件业务订阅处理
     * @param message
     */
    void topicConsumerEmail(String message);

    /**
     * 通配符模式消息接收、进行短信业务订阅处理
     * @param message
     */
    void topicConsumerSms(String message);
}
